from docx import Document
from docx.shared import Pt, RGBColor, Inches
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT, WD_LINE_SPACING
from docx.enum.table import WD_TABLE_ALIGNMENT
from docx.oxml.ns import qn
import os


def create_word_document(filename="高级文档示例.docx"):
    # 创建新的Word文档
    doc = Document()

    # ================== 设置全局样式 ==================
    # 设置中文字体（Windows系统常用字体）
    styles = doc.styles
    normal_style = styles['Normal']
    font = normal_style.font
    font.name = '微软雅黑'
    font.size = Pt(11)
    # 设置中文字体
    font._element.rPr.rFonts.set(qn('w:eastAsia'), '微软雅黑')

    # 设置行距为1.5倍
    paragraph_format = normal_style.paragraph_format
    paragraph_format.line_spacing_rule = WD_LINE_SPACING.ONE_POINT_FIVE

    # ================== 添加标题 ==================
    # 主标题
    title = doc.add_heading('Python 文档处理示例', level=0)
    title.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
    title.runs[0].font.size = Pt(24)
    title.runs[0].font.color.rgb = RGBColor(0, 0, 128)  # 深蓝色

    # 副标题
    subtitle = doc.add_heading('使用 python-docx 库创建专业文档', level=1)
    subtitle.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
    subtitle.runs[0].font.size = Pt(16)
    subtitle.runs[0].font.color.rgb = RGBColor(70, 70, 70)

    # 作者信息
    author = doc.add_paragraph('作者: Python开发者 | 创建日期: 2023年6月15日')
    author.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
    author.runs[0].font.italic = True

    doc.add_page_break()

    # ================== 添加目录 ==================
    toc = doc.add_heading('目录', level=1)
    toc.runs[0].font.bold = True

    # 目录内容
    contents = [
        '''目录
一、 投标函	9
二、 开标一览表	10
三、 服务工作方案	11
3.1. 外包团队管理能力	11
3.1.1. 外包人员日常管理方案	11
3.1.2. 外包人员稳定性管理方案	21
3.1.3. 人员绩效与激励方案	58
3.2. 外包团队交付方案	66
3.2.1. 针对某头部证券的需求响应方案	66
3.2.2. 人员贮备情况	82
3.2.3. 针对某头部证券采购需求制定的招聘计划和方案	86
3.2.4. 针对某头部证券的招聘团队设置	101
3.2.5. 针对某头部证券的定期沟通计划	109
3.2.6. 针对某头部证券的服务质量改进计划	115
3.3. 安全和法律风险方案	117
3.3.1. 信息安全方案	117
3.3.2. 法律风险方案	146
3.3.3. 后勤保障	148
四、 法定代表人授权书	154
五、 招标文件规定的其他资料	155
5.1. 营业执照	155
5.2. 近三年审计报告	156
5.2.1. 2023年审计报告	156
5.2.2. 2022年审计报告	226
5.2.3. 2021年审计报告	291
5.3. 完税证明	332
5.4. 社保参保证明	332
5.5. “信用中国”网站截图	357
5.5.1. 未被列入失信被执行人	357
5.5.2. 未被列入税收违法黑名单	357
5.5.3. 政府采购严重违法失信行为记录名单	358
5.6. 最近三月内的中国人民银行征信中心出具的信用报告	359
5.7. 一般纳税人证明材料	377
一般情况表	377
5.8. 	377
5.9. 资质证书	379
5.9.1. 软件成熟度认证CMMI Level5	379
5.9.2. 测试成熟度认证TMMI Level3	380
5.9.3. ISO9001：质量管理体系认证证书	381
5.9.4. ISO27001：信息安全管理体系认证证书	382
5.9.5. ISO27701：隐私信息管理体系认证证书	383
5.9.6. ISO20000：服务管理体系认证证书	384
5.9.7. ISO14001：环境管理体系认证证书	385
5.9.8. ISO45001：职业健康安全管理体系认证证书	386
5.9.9. ITSS认证	387
5.9.10. 数据管理能力成熟度-二级（DCMM2级）	387
5.9.11. 中国增值电信业务经营许可证	388
5.9.12. 高新技术企业证书	389
5.9.13. 信创证书	389
5.9.14. 软件产品证书	390
5.9.15. 软件企业认定证书	390
5.9.16. 企业信用评价AAA级信用企业	391
5.9.17. 中国移动：物联网优秀合作伙伴	391
5.9.18. Alibaba×工信国际：数智设计产业合作伙伴	392
5.9.19. 荣誉：2024“数据要素×”数智服务创新服务商	392
5.9.20. 荣誉：2024年度社会责任突出贡献集体	393
5.9.21. 荣誉：2024年度先进基层党组织	394
5.9.22. 荣誉：2024年余杭区“数字经济创新发展示范企业”	394
5.9.23. 荣誉：2023浙江省成长性最快百强企业	395
5.9.24. 荣誉：2023慧博科技社会突出荣誉证书	396
5.9.25. 荣誉：2023慧博科技先进基层党组织荣誉证书	397
5.9.26. 荣誉：《数字经济》杂志- 2022-2023年度数字经济十大最具影响力企业	398
5.9.27. 荣誉：2022-2023年度数字经济十大最具影响力企业	399
5.9.28. 荣誉：2021-2022软件信息技术服务领导品牌	399
5.9.29. 荣誉：2021中国软件和信息服务业年度创新企业	400
5.9.30. 荣誉：2021人力资源管理杰出奖	400
六、 投标承诺函（须加盖公章）	402
6.1. 资格要求承诺书	402
6.2. 诚信承诺书	404
七、 投标人类似业绩表	405
八、 人员配备表	406
8.1. 项目成员表	406
8.2. 各项目人员简历	410
8.2.1. 孙武南	410
8.2.2. 薛亚飞	413
8.2.3. 朱明会	415
8.2.4. 张艺成	417
8.2.5. 杨斌	419
8.2.6. 张晓晗	421
8.2.7. 栗云露	423
8.2.8. 张桂汕	425
8.2.9. 董吉祥	427
8.2.10. 毕晓船	429
8.2.11. 覃俊	431
8.2.12. 贾梦凯	433
8.2.13. 王潇	435
8.2.14. 桂良成	437
8.2.15. 阮浩	439
8.2.16. 李香雨	441
8.2.17. 杨艺	443
8.2.18. 罗超	445
8.2.19. 陈厚霖	447
8.2.20. 李磊	449
8.2.21. 孙利豪	451
8.2.22. 杨恒博	453
8.2.23. 张博文	455
8.2.24. 王梦洁	457
8.2.25. 薛子腾	459
8.2.26. 柴恩庆	461
8.2.27. 黄恒	463
8.2.28. 李明雨	465
8.2.29. 陈祥雄	467
8.2.30. 邹亚卉	469
8.2.31. 余龙	471
8.2.32. 吴正义	473
8.2.33. 王传弼	475
8.2.34. 陈鹤	477
8.2.35. 郭壮	479
8.2.36. 王岗	481
8.2.37. 潘灿宇	483
8.2.38. 胡赛军	485
8.2.39. 张港辉	487
8.2.40. 代恩运	489
8.2.41. 余小满	491
8.2.42. 阿迪力江·阿卜杜热伊木	493
8.2.43. 张一超	495
8.2.44. 徐广宇	497
8.2.45. 明黄栋	499
8.2.46. 祝佳津	501
8.2.47. 王思瑶	503
8.2.48. 胡嘉跃	505
8.2.49. 胡叶骏	507
8.2.50. 毛宗泱	509
8.2.51. 沈震	511
8.2.52. 魏小东	513
8.2.53. 邱俊茗	515
8.2.54. 刘焜鹏	517
8.2.55. 周荣伟	519
8.2.56. 王学虎	521
8.2.57. 彭佳超	523
8.2.58. 阮松威	525
8.2.59. 张博士	527
8.2.60. 翟先浩	529
8.2.61. 朱周青	531
8.2.62. 黄伟琴	533
8.2.63. 周鹏羽	536
8.2.64. 赵明升	539
8.2.65. 匡贤飞	541
8.2.66. 李伯杰	543
8.2.67. 胡杨晨	546
8.2.68. 杨良恒	549
8.2.69. 许平	551
8.2.70. 周能勇	554
8.2.71. 高晨	557
8.2.72. 程建强	559
8.2.73. 刘正睿	562
8.2.74. 陈诗文	564
8.2.75. 高振	566
8.2.76. 刘文茂	568
8.2.77. 陈贝贝	570
8.2.78. 张特君	572
8.2.79. 李连民	574
8.2.80. 刘金平	576
8.2.81. 郑里	578
8.2.82. 崔文情	580
8.2.83. 王文超	582
8.2.84. 赵晔	584
8.2.85. 张婷婷	586
8.2.86. 孙超	588
8.2.87. 刘子铭	591
8.2.88. 赵玮	593
8.2.89. 周婷芳	595
8.2.90. 沈熠辉	597
8.2.91. 师建松	599
8.2.92. 徐争光	601
8.2.93. 杨雅婷	603
8.2.94. 章学义	605
8.2.95. 黄锐	607
8.2.96. 王国兵	609
8.2.97. 刘克灼	611
8.2.98. 裴梦柯	613
8.2.99. 王帅	615
8.2.100. 王恒	617
8.2.101. 沈亚齐	619
8.2.102. 燕学文	621
8.2.103. 黄雪兰	624
8.2.104. 潘尚博	626
8.2.105. 陈加炜	628
8.2.106. 管锐	630
8.2.107. 王鹏飞	632
8.2.108. 任鹏	634
8.2.109. 张忠旭	637
8.2.110. 许威	639
8.2.111. 来利灿	641
8.2.112. 沈哲侃	643
8.2.113. 沈洁	645
8.2.114. 张明亮	647
8.2.115. 潘泉	649
8.2.116. 孙天宇	651
8.2.117. 孙传浩	653
8.2.118. 李洋	655
8.2.119. 赵海	657
8.2.120. 刘今	659
8.2.121. 温联坤	661
8.2.122. 陈瑶	663
8.2.123. 曾洪祥	665
8.2.124. 彭伟	668
8.2.125. 李小松	671
8.2.126. 彭文军	674
8.2.127. 石浩	677
8.2.128. 靳守红	679
8.2.129. 胡建飞	682
8.2.130. 孙营营	684
8.2.131. 任亚东	687
8.2.132. 孙廷雷	690
8.2.133. 黄浩斌	692
8.2.134. 李桩桩	694
8.2.135. 毛淑娜	696
8.2.136. 孙朋	698
8.2.137. 孙鑫锋	700
8.2.138. 王奔奔	702
8.2.139. 潜华江	704
8.2.140. 秦黎明	707
8.2.141. 吕玲	710
8.2.142. 尚朋朋	712
8.2.143. 刘小展	714
8.2.144. 张智强	716
8.2.145. 许耀耀	718
8.2.146. 江庆	720
8.2.147. 杨翠	722
8.2.148. 余帮华	724
8.2.149. 金梦	727
8.2.150. 韩锡兆	729
九、 主要负责人简历表（须提供本项目项目经理、副经理（如有）等主要负责人的情况）	731
十、 投标人与其他单位资产关联、隶属关系、股权关系框图	733
十一、 投标人参加远程异地开标仪式须知	734
投标人参加远程异地开标仪式须知（在线音视频系统）	736'''
    ]

    for item in contents:
        p = doc.add_paragraph(item, style='List Number')
        # 设置目录项样式
        p.runs[0].font.size = Pt(12)

    doc.add_page_break()

    # ================== 第一部分：文档简介 ==================
    doc.add_heading('1. 文档简介', level=1)
    doc.add_paragraph(
        '本示例展示了如何使用 python-docx 库创建专业的 Word 文档。该库提供了丰富的功能，可以满足大多数文档生成需求。')

    intro_text = [
        "python-docx 是一个强大的 Python 库，用于创建和修改 Microsoft Word (.docx) 文件。",
        "它支持多种文档元素：",
        "  - 段落和标题",
        "  - 表格和列表",
        "  - 图片和形状",
        "  - 页眉和页脚",
        "  - 样式和格式设置"
    ]

    for text in intro_text:
        doc.add_paragraph(text)

    # ================== 第二部分：文本样式示例 ==================
    doc.add_heading('2. 文本样式示例', level=1)

    # 不同字体大小
    doc.add_heading('字体大小示例', level=2)
    sizes = [8, 10, 12, 14, 16, 18, 20, 24]
    for size in sizes:
        p = doc.add_paragraph(f'这是 {size} 号字体的文本')
        p.runs[0].font.size = Pt(size)

    # 不同字体颜色
    doc.add_heading('字体颜色示例', level=2)
    colors = [
        ('红色文本', RGBColor(255, 0, 0)),
        ('绿色文本', RGBColor(0, 128, 0)),
        ('蓝色文本', RGBColor(0, 0, 255)),
        ('紫色文本', RGBColor(128, 0, 128)),
    ]

    for text, color in colors:
        p = doc.add_paragraph()
        run = p.add_run(text)
        run.font.color.rgb = color

    # 混合样式段落
    doc.add_heading('混合样式段落', level=2)
    p = doc.add_paragraph()
    p.add_run('这是普通文本。')
    run = p.add_run('这是加粗文本。')
    run.bold = True
    run = p.add_run('这是斜体文本。')
    run.italic = True
    run = p.add_run('这是下划线文本。')
    run.underline = True
    run = p.add_run('这是红色文本。')
    run.font.color.rgb = RGBColor(255, 0, 0)

    # ================== 第三部分：列表示例 ==================
    doc.add_heading('3. 列表示例', level=1)

    # 项目符号列表
    doc.add_heading('项目符号列表', level=2)
    bullet_items = [
        "Python 基础语法",
        "数据结构与算法",
        "面向对象编程",
        "文件操作与数据处理",
        "Web 开发基础"
    ]

    for item in bullet_items:
        doc.add_paragraph(item, style='List Bullet')

    # 编号列表
    doc.add_heading('编号列表', level=2)
    numbered_items = [
        "安装 Python 环境",
        "学习基础语法",
        "掌握常用库",
        "完成实际项目",
        "参与开源贡献"
    ]

    for item in numbered_items:
        doc.add_paragraph(item, style='List Number')

    # 多级列表
    doc.add_heading('多级列表', level=2)
    doc.add_paragraph("一级项目 1", style='List Number')
    doc.add_paragraph("二级项目 A", style='List Bullet 2')
    doc.add_paragraph("二级项目 B", style='List Bullet 2')
    doc.add_paragraph("一级项目 2", style='List Number')
    doc.add_paragraph("二级项目 C", style='List Bullet 2')

    # ================== 第四部分：表格示例 ==================
    doc.add_heading('4. 表格示例', level=1)

    # 简单表格 - 修复索引问题
    doc.add_heading('简单表格', level=2)

    # 表格数据
    data = [
        ["1", "需求分析", "100%"],
        ["2", "系统设计", "95%"],
        ["3", "代码实现", "85%"],
        ["4", "测试验收", "70%"]
    ]

    # 创建表格（行数 = 表头1行 + 数据行数）
    table = doc.add_table(rows=len(data) + 1, cols=3)
    table.style = 'Table Grid'
    table.alignment = WD_TABLE_ALIGNMENT.CENTER

    # 设置表头
    headers = table.rows[0].cells
    headers[0].text = '序号'
    headers[1].text = '项目'
    headers[2].text = '进度'

    # 填充数据 - 使用正确的行索引
    for i, row_data in enumerate(data):
        row = table.rows[i + 1].cells  # 从第1行开始（索引0是表头）
        for j, cell_data in enumerate(row_data):
            row[j].text = cell_data

    # 带样式的表格 - 修复索引问题
    doc.add_heading('带样式的表格', level=2)

    # 表格数据
    table_data = [
        ["一月", "120", "80", "40"],
        ["二月", "150", "90", "60"],
        ["三月", "180", "100", "80"],
        ["四月", "200", "110", "90"],
    ]

    # 创建表格（表头1行 + 数据行 + 汇总行1行）
    table = doc.add_table(rows=len(table_data) + 2, cols=4)
    table.style = 'Light Shading'

    # 设置表头
    headers = table.rows[0].cells
    headers[0].text = '月份'
    headers[1].text = '收入(万元)'
    headers[2].text = '支出(万元)'
    headers[3].text = '利润(万元)'

    # 填充数据
    for i, row_data in enumerate(table_data):
        row = table.rows[i + 1].cells  # 从第1行开始
        for j, cell_data in enumerate(row_data):
            row[j].text = cell_data

    # 设置汇总行
    summary_row = table.rows[len(table_data) + 1].cells  # 最后一行
    summary_row[0].text = "总计"
    summary_row[1].text = "650"
    summary_row[2].text = "380"
    summary_row[3].text = "270"
    summary_row[3].paragraphs[0].runs[0].font.bold = True
    summary_row[3].paragraphs[0].runs[0].font.color.rgb = RGBColor(0, 128, 0)

    # ================== 第五部分：图片插入示例 ==================
    doc.add_heading('5. 图片插入示例', level=1)
    doc.add_paragraph('下面插入一张示例图片：')

    try:
        # 尝试添加图片（如果存在）
        image_path = "example.png"
        if os.path.exists(image_path):
            doc.add_picture(image_path, width=Inches(4))
            last_paragraph = doc.paragraphs[-1]
            last_paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
        else:
            # 使用占位符文本
            placeholder = doc.add_paragraph()
            placeholder.add_run("(此处应有图片)").italic = True
            placeholder.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
    except Exception as e:
        print(f"图片插入失败: {e}")
        error_msg = doc.add_paragraph("(图片插入失败)")
        error_msg.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER

    # 图片说明
    p = doc.add_paragraph()
    p.add_run("图1: 示例图片").italic = True
    p.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER

    # ================== 第六部分：分页与分节 ==================
    doc.add_heading('6. 分页与分节', level=1)
    doc.add_paragraph('这是文档的最后一节内容。')

    # 添加分页符
    doc.add_page_break()

    # ================== 第七部分：总结 ==================
    doc.add_heading('7. 总结', level=1)

    conclusion = [
        "通过本示例，我们展示了 python-docx 库的强大功能：",
        "  ✓ 创建标题和段落",
        "  ✓ 设置丰富的文本样式",
        "  ✓ 添加各种列表",
        "  ✓ 创建专业表格",
        "  ✓ 插入图片",
        "  ✓ 控制文档布局",
        "",
        "python-docx 是自动化文档生成的理想工具，适用于：",
        "  • 报告生成",
        "  • 合同创建",
        "  • 证书制作",
        "  • 投标文件",
        "  • 任何需要批量生成Word文档的场景"
    ]

    for text in conclusion:
        doc.add_paragraph(text)

    # 添加结束语
    end_note = doc.add_paragraph()
    end_note.add_run("文档生成完成。感谢使用 python-docx!").bold = True
    end_note.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER

    # ================== 保存文档 ==================
    doc.save(filename)
    print(f"文档已成功生成: {filename}")


if __name__ == "__main__":
    create_word_document("高级文档示例.docx")